﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="ViewModelDiagramSchema" targetNamespace="http://schemas.microsoft.com/dsltools/ViewModelDiagram" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/ViewModelDiagram" xmlns:core="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:import id="CoreSchema" namespace="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" />
  <!-- Model -->
  <xsd:element name="model" type="Model" substitutionGroup="core:modelElement" />
  <xsd:complexType name="Model">
    <xsd:annotation>
      <xsd:documentation>The root in which all other elements are embedded. Appears as a diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: ModelHasViewModels -->
          <xsd:element name="viewModels" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ModelHasViewModels</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="modelHasViewModels">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from ModelHasViewModels needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="viewModel" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: ModelHasFrameworks -->
          <xsd:element name="frameworks" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of ModelHasFrameworks</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="modelHasFrameworks" minOccurs="1" maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of ModelHasFrameworks needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- dslVersion -->
        <xsd:attribute name="dslVersion" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Model Moniker -->
  <xsd:element name="modelMoniker" type="ModelMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Model instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModel -->
  <xsd:element name="viewModel" type="ViewModel" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModel">
    <xsd:annotation>
      <xsd:documentation>ViewModels embedded in the model. Appear as boxes on the diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: ViewModelHasViewModelProperty -->
          <xsd:element name="viewModelProperty" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ViewModelHasViewModelProperty</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="viewModelHasViewModelProperty" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of ViewModelHasViewModelProperty needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: ViewModelHasViewModelCommand -->
          <xsd:element name="viewModelCommand" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ViewModelHasViewModelCommand</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="viewModelHasViewModelCommand" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of ViewModelHasViewModelCommand needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: ViewModelHasViewModelNamespace -->
          <xsd:element name="viewModelNamespace" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ViewModelHasViewModelNamespace</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="viewModelHasViewModelNamespace" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of ViewModelHasViewModelNamespace needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: ViewModelHasViewModelEvent -->
          <xsd:element name="viewModelEvent" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of ViewModelHasViewModelEvent</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="viewModelHasViewModelEvent" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of ViewModelHasViewModelEvent needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: Aggregate -->
          <xsd:element name="targetViewModel" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of Aggregate</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="aggregate" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of Aggregate needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: Inherit -->
          <xsd:element name="inheritTargetViewModel" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of Inherit</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="inherit" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of Inherit needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" use="required" />
        <!-- Property: BaseClass -->
        <xsd:attribute name="baseClass" type="xsd:string" />
        <!-- Property: Comment -->
        <xsd:attribute name="comment" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModel Moniker -->
  <xsd:element name="viewModelMoniker" type="ViewModelMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModel instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="name" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelProperty -->
  <xsd:element name="viewModelProperty" type="ViewModelProperty" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelProperty">
    <xsd:annotation>
      <xsd:documentation>Description for Mnow.MvvmLight.Tool.ViewModelDesigner.ModelProperty</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Attribute -->
        <xsd:attribute name="attribute" type="xsd:string" />
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
        <!-- Property: Type -->
        <xsd:attribute name="type" type="xsd:string" />
        <!-- Property: Comment -->
        <xsd:attribute name="comment" type="xsd:string" />
        <!-- Property: Multiplicity -->
        <xsd:attribute name="multiplicity" type="Multiplicty" />
        <!-- Property: NeedsInitialize -->
        <xsd:attribute name="needsInitialize" type="xsd:boolean" />
        <!-- Property: NeedsCleanup -->
        <xsd:attribute name="needsCleanup" type="xsd:boolean" />
        <!-- Property: InitialValue -->
        <xsd:attribute name="initialValue" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelProperty Moniker -->
  <xsd:element name="viewModelPropertyMoniker" type="ViewModelPropertyMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelPropertyMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelProperty instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelCommand -->
  <xsd:element name="viewModelCommand" type="ViewModelCommand" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelCommand">
    <xsd:annotation>
      <xsd:documentation>Description for Mnow.MvvmLight.Tool.ViewModelDesigner.ModelCommand</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
        <!-- Property: ParameterType -->
        <xsd:attribute name="parameterType" type="xsd:string" />
        <!-- Property: Comment -->
        <xsd:attribute name="comment" type="xsd:string" />
        <!-- Property: NeedsInitialize -->
        <xsd:attribute name="needsInitialize" type="xsd:boolean" />
        <!-- Property: NeedsCleanup -->
        <xsd:attribute name="needsCleanup" type="xsd:boolean" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelCommand Moniker -->
  <xsd:element name="viewModelCommandMoniker" type="ViewModelCommandMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelCommandMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelCommand instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelEvent -->
  <xsd:element name="viewModelEvent" type="ViewModelEvent" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelEvent">
    <xsd:annotation>
      <xsd:documentation>Description for Mnow.MvvmLight.Tool.ViewModelDesigner.ModelEvent</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
        <!-- Property: HandlerType -->
        <xsd:attribute name="handlerType" type="xsd:string" />
        <!-- Property: ArgsType -->
        <xsd:attribute name="argsType" type="xsd:string" />
        <!-- Property: Comment -->
        <xsd:attribute name="comment" type="xsd:string" />
        <!-- Property: NeedsInitialize -->
        <xsd:attribute name="needsInitialize" type="xsd:boolean" />
        <!-- Property: NeedsCleanup -->
        <xsd:attribute name="needsCleanup" type="xsd:boolean" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelEvent Moniker -->
  <xsd:element name="viewModelEventMoniker" type="ViewModelEventMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelEventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelEvent instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelNamespace -->
  <xsd:element name="viewModelNamespace" type="ViewModelNamespace" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelNamespace">
    <xsd:annotation>
      <xsd:documentation>Description for Mnow.MvvmLight.Tool.ViewModelDesigner.ModelNameSpace</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelNamespace Moniker -->
  <xsd:element name="viewModelNamespaceMoniker" type="ViewModelNamespaceMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelNamespaceMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelNamespace instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Framework -->
  <xsd:element name="framework" type="Framework" substitutionGroup="core:modelElement" />
  <xsd:complexType name="Framework">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: Locate -->
          <xsd:element name="viewModel" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of Locate</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="locate" minOccurs="1" maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of Locate needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: FrameworkName -->
        <xsd:attribute name="frameworkName" type="FrameworkType" />
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Framework Moniker -->
  <xsd:element name="frameworkMoniker" type="FrameworkMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="FrameworkMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Framework instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ModelHasViewModels -->
  <xsd:element name="modelHasViewModels" abstract="true" type="ModelHasViewModels" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ModelHasViewModels" abstract="true" >
    <xsd:annotation>
      <xsd:documentation>Embedding relationship between the Model and Elements</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModel -->
          <xsd:element ref="viewModel" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ModelHasViewModels Moniker -->
  <xsd:element name="modelHasViewModelsMoniker" type="ModelHasViewModelsMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ModelHasViewModelsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ModelHasViewModels instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelProperty -->
  <xsd:element name="viewModelHasViewModelProperty" type="ViewModelHasViewModelProperty" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelHasViewModelProperty">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModelProperty -->
          <xsd:element ref="viewModelProperty" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelProperty Moniker -->
  <xsd:element name="viewModelHasViewModelPropertyMoniker" type="ViewModelHasViewModelPropertyMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelHasViewModelPropertyMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelHasViewModelProperty instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelCommand -->
  <xsd:element name="viewModelHasViewModelCommand" type="ViewModelHasViewModelCommand" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelHasViewModelCommand">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModelCommand -->
          <xsd:element ref="viewModelCommand" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelCommand Moniker -->
  <xsd:element name="viewModelHasViewModelCommandMoniker" type="ViewModelHasViewModelCommandMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelHasViewModelCommandMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelHasViewModelCommand instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelNamespace -->
  <xsd:element name="viewModelHasViewModelNamespace" type="ViewModelHasViewModelNamespace" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelHasViewModelNamespace">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModelNamespace -->
          <xsd:element ref="viewModelNamespace" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelNamespace Moniker -->
  <xsd:element name="viewModelHasViewModelNamespaceMoniker" type="ViewModelHasViewModelNamespaceMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelHasViewModelNamespaceMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelHasViewModelNamespace instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelEvent -->
  <xsd:element name="viewModelHasViewModelEvent" type="ViewModelHasViewModelEvent" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ViewModelHasViewModelEvent">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModelEvent -->
          <xsd:element ref="viewModelEvent" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ViewModelHasViewModelEvent Moniker -->
  <xsd:element name="viewModelHasViewModelEventMoniker" type="ViewModelHasViewModelEventMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ViewModelHasViewModelEventMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ViewModelHasViewModelEvent instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Aggregate -->
  <xsd:element name="aggregate" type="Aggregate" substitutionGroup="core:modelElement" />
  <xsd:complexType name="Aggregate">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModel -->
          <xsd:element ref="viewModelMoniker" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Multiplicity -->
        <xsd:attribute name="multiplicity" type="Multiplicty" />
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
        <!-- Property: NeedsInitialize -->
        <xsd:attribute name="needsInitialize" type="xsd:boolean" />
        <!-- Property: NeedsCleanup -->
        <xsd:attribute name="needsCleanup" type="xsd:boolean" />
        <!-- Property: NeedsLocator -->
        <xsd:attribute name="needsLocator" type="xsd:boolean" />
        <!-- Property: PropertyName -->
        <xsd:attribute name="propertyName" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Aggregate Moniker -->
  <xsd:element name="aggregateMoniker" type="AggregateMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="AggregateMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Aggregate instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ModelHasFrameworks -->
  <xsd:element name="modelHasFrameworks" type="ModelHasFrameworks" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ModelHasFrameworks">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end Framework -->
          <xsd:element ref="framework" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ModelHasFrameworks Moniker -->
  <xsd:element name="modelHasFrameworksMoniker" type="ModelHasFrameworksMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ModelHasFrameworksMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ModelHasFrameworks instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Locate -->
  <xsd:element name="locate" type="Locate" substitutionGroup="core:modelElement" />
  <xsd:complexType name="Locate">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModel -->
          <xsd:element ref="viewModelMoniker" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsLocate -->
        <xsd:attribute name="isLocate" type="xsd:boolean" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Locate Moniker -->
  <xsd:element name="locateMoniker" type="LocateMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="LocateMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Locate instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Inherit -->
  <xsd:element name="inherit" type="Inherit" substitutionGroup="core:modelElement" />
  <xsd:complexType name="Inherit">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ViewModel -->
          <xsd:element ref="viewModelMoniker" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Inherit Moniker -->
  <xsd:element name="inheritMoniker" type="InheritMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="InheritMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Inherit instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Enum Multiplicty -->
  <xsd:simpleType name="Multiplicty">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="One"/>
      <xsd:enumeration value="ZeroMany"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum FrameworkType -->
  <xsd:simpleType name="FrameworkType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="MVVMToolkit"/>
      <xsd:enumeration value="Prism"/>
      <xsd:enumeration value="None"/>
      <xsd:enumeration value="PortableClassLibrary"/>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

